package com.itany.template;

/**
 * Author:石小俊
 * Date: 2022/11/3 15:04
 */
public abstract class SortTemplate<T> {

    // 将创建的接口作为模板方法的参数
    public static <T> void sort(T[] arr, SortComparator<T> sc){
        // 先制定一个顶层的业务逻辑,而将具体的细节留给子类去实现
        for(int i = 0; i < arr.length; i++){
            for(int j = i+1; j < arr.length; j++){
                // 不确定比较细节的时候,直接使用接口方法不去实现
                // 交给调用者调用时根据其业务需求进行具体的实现
                int m = sc.compareTo(arr[i],arr[j]);
                if(m > 0){
                    T temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }
}
